热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

都会|浅色_MD风格的DialogMaterialDialog

篇首语:本文由编程笔记#小编为大家整理,主要介绍了MD风格的Dialog----MaterialDialog相关的知识,希望对你有一定的参考价值。一个MD风格

篇首语:本文由编程笔记#小编为大家整理,主要介绍了MD 风格的 Dialog ---- MaterialDialog相关的知识,希望对你有一定的参考价值。


一个 MD 风格的 Dialog 的开源项目,GitHub 地址:https://github.com/afollestad/material-dialogs


定义:

MaterialDialog:一个漂亮、流畅、可定制的对话框。


依赖:


  • 核心模块的依赖:compile 'com.afollestad.material-dialogs:core:0.9.6.0'
    核心模块包含该库的所有主要类,包括 MaterialDialog。 您可以使用核心创建基本、列表、单/多选项、进度、输入等对话框。

  • 公共模块的依赖:compile 'com.afollestad.material-dialogs:commons:0.9.6.0'
    公共模块包含不是每个人都需要的扩展库。 这包括 ColorChooserDialog、FolderChooserDialog、Material Preference 类和 MaterialSimpleListAdapter / MaterialSimpleListItem。


demo:

https://github.com/afollestad/material-dialogs/blob/master/sample/sample.apk


使用:


  1. 基本对话框:Basic Dialog

new MaterialDialog.Builder(this)// 初始化建造者
.title(R.string.title)// 标题
.content(R.string.content)// 内容
.positiveText(R.string.agree)
.negativeText(R.string.title)
.show();// 显示对话框

注意:Activity 中使用该功能需要 Activity 继承 AppCompat 主题才能正确使用此库。


  1. 关闭对话框:Dismissing Dialog

build():创建对话框
show():显示对话框
dismiss():关闭对话框
类似 AlertDialog 的,有以下两种方式获得MaterialDialog 的实例并显示它。

方式一:

MaterialDialog dialog = new MaterialDialog.Builder(this)
.title(R.string.title)// 标题
.content(R.string.content)// 内容
.positiveText(R.string.agree)
.show();// 显示对话框

方式二:

MaterialDialog.Builder builder = new MaterialDialog.Builder(this)
.title(R.string.title)// 标题
.content(R.string.content)// 内容
.positiveText(R.string.agree);
MaterialDialog dialog = builder.build();// 创建对话框
dialog.show();// 显示对话框

  1. 显示一个图标:Dismissing Dialogs

图标显示在标题的左侧。

new MaterialDialog.Builder(this)
.title(R.string.title)// 标题
.content(R.string.content)// 内容
.positiveText(R.string.agree)
.icon(R.drawable.icon) // 标题左侧的图标
.show();// 显示对话框

还可以使用 limitIconToDefaultSize()、maxIconSize(int size)、maxIconSizeRes(int sizeRes) 这些方法来限制图标的最大大小。


  1. 叠放行动按钮:Stacked Action Buttons

如果你有多个操作按钮一起太宽而无法放在一行上,对话框会将这些按钮叠放在垂直方向。
叠放行为在 Builder 中定义,一共有三种叠放行为,分别是


  • StackingBehavior.ALWAYS:总是垂直叠放
  • StackingBehavior.ADAPTIVE:自适应,如果他们需要适合的对话框,则动作按钮将垂直叠放
  • StackingBehavior.NEVER:从不叠放

new MaterialDialog.Builder(this)
.title(R.string.title)// 标题
.content(R.string.content)// 内容
.positiveText(R.string.long_positive)
.negativeText(R.string.negative)
.stackingBehavior(StackingBehavior.ADAPTIVE) // 默认值:自适应
.show();// 显示对话框

  1. 中性行动按钮:Neutral Action Button

除了正面和负面文本之外,还可以指定中性文本,它会显示最左边的中立动作。

new MaterialDialog.Builder(this)
.title("设备列表")// 标题
.content("content")// 内容
.positiveText(R.string.long_positive)
.negativeText(R.string.negative)
.neutralText(R.string.more_info)
.show();// 显示对话框

  1. 回调:Callbacks

从版本 0.8.2.0 开始,callback() Builder 方法已被弃用,以支持下面讨论的各个回调方法。 早期版本仍然需要使用 ButtonCallback。

new MaterialDialog.Builder(this)
.onPositive(new MaterialDialog.SingleButtonCallback()
@Override
public void onClick(MaterialDialog dialog, DialogAction which)
// TODO

)
.onNeutral(new MaterialDialog.SingleButtonCallback()
@Override
public void onClick(MaterialDialog dialog, DialogAction which)
// TODO

)
.onNegative(new MaterialDialog.SingleButtonCallback()
@Override
public void onClick(MaterialDialog dialog, DialogAction which)
// TODO

)
.onAny(new MaterialDialog.SingleButtonCallback() // 此方法可以监听所有三个动作按钮
@Override
public void onClick(MaterialDialog dialog, DialogAction which)
if (DialogAction.POSITIVE == which)
// TODO:
else if (DialogAction.NEGATIVE == which)
// TODO:
else if (DialogAction.NEUTRAL == which)
// TODO:


);

注意:如果 autoDismiss 关闭,则必须在这些回调中手动关闭对话框。自动关闭默认开启。


  1. 复选框提示:CheckBox Prompts

复选框提示可以显示类似于 android 用来请求 API 23+ 权限的 UI。
注意:也可以在列表对话框和输入对话框中使用复选框提示。

new MaterialDialog.Builder(this)
.iconRes(R.drawable.ic_default_icon)// 标题左侧的图标
.limitIconToDefaultSize()// 标题左侧图标的最大值
.title("title6")// 标题
.positiveText("Allow")
.negativeText("Deny")
.onAny(new MaterialDialog.SingleButtonCallback()
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which)
Toast.makeText(TestActivity.this, "Prompt checked ? " + dialog.isPromptCheckBoxChecked(),
Toast.LENGTH_SHORT).show();
)
.checkBoxPromptRes(R.string.app_name, false, null)
.show();// 显示对话框

  1. 列表对话框:List Dialogs

String[] items = "A", "BB", "CCC", "DDDD", "EEEEE";
new MaterialDialog.Builder(this)
.title("title7")// 标题
.items(items)// 列表数据
.itemsCallback(new MaterialDialog.ListCallback()
@Override
public void onSelection(MaterialDialog dialog, View itemView, int position, CharSequence text)
Toast.makeText(TestActivity.this, "position = " + position + " , text = " + text, Toast.LENGTH_SHORT).show();
)
.show();// 显示对话框

注意:如果 autoDismiss 关闭,则必须手动关闭回调中的对话框,自动关闭默认开启。你可以将 positiveText() 或其他操作按钮传递给构建器以强制它显示列表下方的操作按钮,但是这仅在某些特定情况下有用。


  1. 单选列表对话框:Single Choice List Dialogs

单选列表对话框与常规列表对话框几乎相同,唯一的区别是使用 itemsCallbackSingleChoice 设置回调而不是 itemsCallback,这表示对话框显示列表项旁边的单选按钮。

String[] items = "A", "BB", "CCC", "DDDD", "EEEEE";
new MaterialDialog.Builder(this)
.title("title8")// 标题
.items(items)// 列表数据
// itemsCallbackSingleChoice 方法中的第一个参数代表预选项的索引值,没有预选项这个值就设置为 -1,有预选项就传入一个预选项的索引值即可。
// 如果不使用自定义适配器,则可以使用 MaterialDialog 实例上的 setSelectedIndex(int) 更新选定的索引值。
.itemsCallbackSingleChoice(1, new MaterialDialog.ListCallbackSingleChoice()
@Override
public boolean onSelection(MaterialDialog dialog, View itemView, int which, CharSequence text)
// 如果使用 alwaysCallSingleChoiceCallback() 方法,在这边返回 false 将不允许新选择的单选按钮被选中。
return true;
)
// 如果没有使用 positiveText() 设置正面操作按钮,则当用户按下正面操作按钮时,
// 对话框将自动调用单一选择回调方法,该对话框也将自行关闭,除非关闭自动关闭。
.positiveText("Choose")
// 如果调用 alwaysCallSingleChoiceCallback() 该方法,则每次用户选择/取消项目时都会调用单选回调方法。
.alwaysCallSingleChoiceCallback()
.show();// 显示对话框

  1. 颜色单选按钮:Coloring Radio Buttons

像“动作”按钮和“材质”对话框中的许多其他元素一样,您可以自定义对话框单选按钮的颜色。 Builder类包含一个widgetColor(),widgetColorRes(),widgetColorAttr()和choiceWidgetColor()方法。 他们的名字和参数注释使他们自我解释。
widgetColor是影响其他UI元素的相同颜色。 choiceWidgetColor特定于单个和多个选择对话框,它仅影响单选按钮和复选框。 您提供了一个ColorStateList,而不是用于生成ColorStateList的单一颜色。
请注意,默认情况下,单选按钮将使用ColorAccent(用于AppCompat)或android:colorAccent(用于Material主题)中的颜色在活动主题中着色。
本自述文件的全局主题部分中还有一个全局主题属性:md_widget_color。


  1. 多选列表对话框:Multi Choice List Dialogs

多选列表对话框与常规列表对话框几乎相同,唯一的区别是使用 itemsCallbackMultiChoice 设置回调而不是 itemsCallback,这表示对话框显示列表项旁边的复选框,并且回调可以返回多个选择。

String[] items = "A", "BB", "CCC", "DDDD", "EEEEE";
new MaterialDialog.Builder(this)
.title("title")// 标题
.items(items)// 列表数据
// itemsCallbackMultiChoice 方法中的第一个参数代表预选项的值,没有预选项这个值就设置为 null,有预选项就传入一组预选项的索引值即可。
.itemsCallbackMultiChoice(null, new MaterialDialog.ListCallbackMultiChoice()
@Override
public boolean onSelection(MaterialDialog dialog, Integer[] which, CharSequence[] text)
// 如果使用 alwaysCallMultiChoiceCallback() 方法,在这边返回 false 将不允许新选择的单选按钮被选中。
return true;
)
// 如果没有使用 positiveText() 设置正面操作按钮,则当用户按下正面操作按钮时,
// 对话框将自动调用多项选择回调方法,该对话框也将自行关闭,除非关闭自动关闭。
.positiveText("Choose")
// 如果调用 alwaysCallMultiChoiceCallback() 该方法,则每次用户选择/取消项目时都会调用多项选择回调方法。
.alwaysCallMultiChoiceCallback()
.show();// 显示对话框

  1. 颜色复选框:Coloring Check Boxes

像“动作”按钮和“材质”对话框中的许多其他元素一样,您可以自定义对话框复选框的颜色。 Builder类包含一个widgetColor(),widgetColorRes(),widgetColorAttr()和choiceWidgetColor()方法。 他们的名字和参数注释使他们自我解释。
widgetColor是影响其他UI元素的相同颜色。 choiceWidgetColor特定于单个和多个选择对话框,它仅影响单选按钮和复选框。 您提供了一个ColorStateList,而不是用于生成ColorStateList的单一颜色。
请注意,默认情况下,单选按钮将使用ColorAccent(用于AppCompat)或android:colorAccent(用于Material主题)中的颜色在活动主题中着色。
本自述文件的全局主题部分中还有一个全局主题属性:md_widget_color。


  1. 为列表项目视图分配标识

如果需要通过 ID 而不是索引来跟踪列表项目,则可以从整数数组中分配项目 ID,还可以传递一个文字整数数组(int [])来代替数组资源 ID。

String[] items = "A", "BB", "CCC", "DDDD", "EEEEE";
int[] ids = 0, 1, 2, 3, 4;
new MaterialDialog.Builder(this)
.title("title")// 标题
.items(items)// 列表数据
.itemsIds(ids)// 列表 ID
.itemsCallback(new MaterialDialog.ListCallback()
@Override
public void onSelection(MaterialDialog dialog, View itemView, int position, CharSequence text)
Toast.makeText(TestActivity.this, "position = " + position + " , text = " + text
+ " , ID = " + itemView.getId(), Toast.LENGTH_SHORT).show();
)
.show();// 显示对话框

  1. 自定义列表对话框:Custom List Dialogs

与 Android 的对话框类似,你可以通过 .adapter() 传递自己的适配器来自定义列表的工作方式。

String[] items = "A", "BB", "CCC", "DDDD", "EEEEE";
new MaterialDialog.Builder(this)
.title("title")// 标题
// adapter 方法中第一个参数表示自定义适配器,该适配器必须继承 RecyclerView.Adapter
// 第二个参数表示布局管理器,如果不需要设置就为 null,可选择的值只有线性布局管理器(LinearLayoutManager)
// 和网格布局管理器(GridLayoutManager)两种
.adapter(new ButtonItemAdapter(this, items), null)
.show();// 显示对话框

/**
* 自定义适配器
*/
private class ButtonItemAdapter extends RecyclerView.Adapter
private Context mContext;
private String[] items = null;
ButtonItemAdapter(Context mContext, String[] items)
this.mContext = mContext;
this.items = items;

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
// TODO
return null;

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position)
// TODO

@Override
public int getItemCount()
return items.length;


注意:对于较新的版本,MaterialDialog 不再支持 ListView 和 ListAdapter,都改成使用 RecycleView了。还有自定义适配器中必须要自行处理项目的点击事件。

MaterialDialog dialog = new MaterialDialog.Builder(this)
...
.build();
RecyclerView list = dialog.getRecyclerView();
// Do something with it.
dialog.show();

  1. 自定义视图:Custom Views

boolean wrapInScrollView = true;
new MaterialDialog.Builder(this)
.title("title")// 标题
// 自定义视图,参数一表示自定义视图的布局,参数二表示是否将自定义视图放置在 ScrollView 中,
// 这允许用户根据需要滚动自定义视图(小屏幕、长内容等)。但是,有些情况下不需要使用这种行为,
// 这些情况主要包括在自定义布局中包含 ScrollView、ListViews、RecycleViews、WebViews、GridViews 等
// wrapInScrollView 该值为 true 时,自定义视图会自动填充它。
.customView(R.layout.activity_login, wrapInScrollView)
.positiveText("Positive")
.show();// 显示对话框

  1. 以后访问:Later Access

如果需要在构建对话框后访问自定义视图中的视图,则可以使用 MaterialDialog 的 getCustomView() 获得自定义视图的对象。如果将布局资源传给 Builder,则对话框会处理布局的初始化工作。

MaterialDialog dialog = // ... initialization via the builder ...
View view = dialog.getCustomView();// 获取对话框中的自定义视图对象

  1. 字体:Typefaces

new MaterialDialog.Builder(this)
.title("title")// 标题
.content("content")// 内容
.typeface("Roboto.ttf", "Roboto-Light.ttf")// 字体
.show();// 显示对话框

修改字体调用 Builder 中的 .typeface(String, String) 方法即可,其中字体时从 assets/font 中提取的。这个方法还将通过 TypefaceHelper 处理循环字体,可以在自己的项目中使用该字体以避免重复分配。原始字体变量不会被回收,每次调用都会再次分配该字体。还有一个全局主题属性可用于自动将字体应用于应用程序中的每一个 MaterialDialog 中。


  1. 获取和设置操作按钮:Getting and Setting Action Buttons

获取对话框的操作按钮:

MaterialDialog dialog = // ... initialization via the builder ...
View positive = dialog.getActionButton(DialogAction.POSITIVE);
View negative = dialog.getActionButton(DialogAction.NEGATIVE);
View neutral = dialog.getActionButton(DialogAction.NEUTRAL);

更新对话框操作按钮的标题:

MaterialDialog dialog = // ... initialization via the builder ...
dialog.setActionButton(DialogAction.NEGATIVE, "New Title");

  1. 主题化:Theming

在 Lollipop 之前,如果不使用反射和自定义绘图,主题化 AlertDialogs 基本上是不可能的,自从 KitKat 之后,Android 变得更加色彩中性,但 AlertDialogs 继续使用 Holo Blue 作为标题和标题分隔符,除了动作按钮,Lollipop 还有更多的改进,默认对话框中没有颜色,但是 MaterialDialog 使得主题化更容易。


  1. 基本:Basics

默认情况下,MaterialDialog 将基于从创建对话框的上下文中检索 ?android:textColorPrimary 属性中应用浅色主题或深色主题。也可以使用全局主题属性来设置。

new MaterialDialog.Builder(this)
.title("title")// 标题
.content("content")// 内容
.theme(Theme.DARK)// 主题
.show();// 显示对话框

  1. 颜色:Colors

使用该项目创建的对话框几乎所有方面都可以被着色。

new MaterialDialog.Builder(this)
.title("title")// 标题
.titleColorRes(R.color.pager_title_1)// 标题颜色
.content("content")// 内容
.contentColor(Color.BLUE)// 内容颜色
.linkColorAttr(R.attr.civ_fill_color)
.dividerColorRes(R.color.pager_title_2)// 分割线颜色
.backgroundColorRes(R.color.interact_color_press)// 背景颜色
.positiveText("Positive")
.positiveColorRes(R.color.pager_title_1)
.negativeText("Negative")
.negativeColorRes(R.color.pager_title_2)
.neutralText("Neutral")
.neutralColorRes(R.color.pager_title_3)
.widgetColorRes(R.color.pager_title_1)// 适用于进度条、复选框和单选按钮
.buttonRippleColorRes(R.color.pager_title_2)
.show();

注意:这些方法中的每一种都有三种方法可以直接设置颜色,分别是:


  • .xxxColor(int color)
  • .xxxColorAttr(int colorAttr)
  • .xxxColorRes(int colorRes)

  1. 选择器:Selectors

选择器是可以在按下或放开时改变状态的绘图。

new MaterialDialog.Builder(this)
// 设置所有操作按钮的选择器
.btnSelector(R.drawable.custom_btn_selector)
// 仅设置 Positive 这个操作按钮的选择器,这样使得 Positive 这个操作按钮与其他操作按钮有不同的选择器
.btnSelector(R.drawable.custom_btn_selector_primary, DialogAction.POSITIVE)
// 设置当按钮叠放时使用的选择器,可能是因为没有足够的控件将它们全部放在一行上,或者在 Builder 上使用 forceStacked(true)
.btnSelectorStacked(R.drawable.custom_btn_selector_stacked)
// 在不使用自定义适配器时,listSelector 用于列表项目的选择器
.listSelector(R.drawable.custom_list_stackedbtn_selector)
.show();// 显示对话框

注意:与使用自定义操作按钮选择器相关的重要说明:确保你的选择器可绘制的引用插入可绘制图像就像默认的那样——这对于正确的动作按钮填充很重要。


  1. 位置:Gravity

new MaterialDialog.Builder(this)
.title("title")// 标题
.titleGravity(GravityEnum.CENTER)// 标题的位置
.content("content")// 内容
.contentGravity(GravityEnum.CENTER)// 内容的位置
.positiveText("Positive")
.negativeText("Negative")
.neutralText("Neutral")
.btnStackedGravity(GravityEnum.END)// 操作按钮的位置
.itemsGravity(GravityEnum.END)// 当你不使用适配器时,列表项的位置
.buttonsGravity(GravityEnum.END)
.show();// 显示对话框

对于 buttonsGravity 的位置表示如下所示:


START(Default)NeutralNegativePositive
CENTERNegativeNeutralPositive
ENDPositiveNegativeNeutral

注意:如果没有 Positive 按钮,就用 Negative 代替,除了 CENTER。


  1. Material 调色版

http://www.google.com/design/spec/style/color.html#color-color-palette


  1. 全局主题



  1. 显示、取消和关闭的回调:Show、Cancel and Dismiss Callbacks

new MaterialDialog.Builder(this)
.title("Use Google's Location Services?")// 标题
.content("Let Google help apps determine location. This means sending " +
"anonymous location data to Google, even when no apps are running.")// 内容
.positiveText("Agree")
.showListener(new DialogInterface.OnShowListener() // 设置显示监听器
@Override
public void onShow(DialogInterface dialogInterface)
Toast.makeText(TestActivity.this, "showListener", Toast.LENGTH_SHORT).show();
)
.cancelListener(new DialogInterface.OnCancelListener() // 设置取消监听器
@Override
public void onCancel(DialogInterface dialogInterface)
Toast.makeText(TestActivity.this, "cancelListener", Toast.LENGTH_SHORT).show();
)
.dismissListener(new DialogInterface.OnDismissListener() // 关闭对话框监听器
@Override
public void onDismiss(DialogInterface dialogInterface)
Toast.makeText(TestActivity.this, "dismissListener", Toast.LENGTH_SHORT).show();
)
// 在对话框之外禁用关闭对话框的功能,默认为 true 表示在对话框之外点击就关闭对话框,
// 反之,该值为 false 时表示在对话框之外点击就禁用关闭对话框的功能
.cancelable(true)
.show();// 显示对话框

  1. 输入对话框:Input Dialogs

new MaterialDialog.Builder(this)
.title("Input")// 标题
.content("input content")// 内容
.inputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD)// 输入类型
.input("input hint", "input prefill", new MaterialDialog.InputCallback()
@Override
public void onInput(@NonNull MaterialDialog dialog, CharSequence input)
Toast.makeText(TestActivity.this, "do something...", Toast.LENGTH_SHORT).show();
)
.show();// 显示对话框

输入对话框会自动处理对 EditText 的对焦饼显示键盘以允许用户立即输入,当对话框关闭时,键盘将被自动解除。
注意:当按下输入提交给回调时,该对话框将强制显示 positive 操作按钮,另外,输入类型是可选项,不一定非要设置。


  1. 带颜色的 EditText:Coloring the EditText

可自定义输入对话框中 EditText 的颜色,使用方法:widgetColor()、widgetColorRes()、widgetColorAttr()
注意:默认情况下,EditText 将使用 AppCompat 中的 colorAccent 属性或者 Material 主题中的 android:colorAccent 属性。
全局属性:md_widget_color。


  1. 限制输入长度:Limiting Input Length

new MaterialDialog.Builder(this)
.title("Input")// 标题
.inputRangeRes(2, 20, R.color.pager_title_3)// 限制输入范围
.input(null, null, new MaterialDialog.InputCallback()
@Override
public void onInput(@NonNull MaterialDialog dialog, CharSequence input)
Toast.makeText(TestActivity.this, "Do something...", Toast.LENGTH_SHORT).show();

)
.show();// 显示对话框

  1. 自定义失效:Custom Invalidation

启用或禁用 EditText 的最简单方法是从 Builder 中调用 alwaysCallInputCallback() 方法,以便当用户更改输入时调用回调函数,这个方法可以不断检查输入的内容,如果决定不能提交,可以在回调中使用它来禁用提交按钮:

dialog.getActionButton(DialogAction.POSITIVE).setEnabled(false);

  1. 进度条对话框:Progress Dialogs

(1)不确定进度条对话框:

new MaterialDialog.Builder(this)
.title("progress dialog")// 标题
.content("please wait")// 内容
.progress(true, 0)// 不确定进度条
.show();// 显示对话框

(2)确定进度条对话框(Seek Bar):

MaterialDialog dialog = new MaterialDialog.Builder(this)
.title("progress dialog")// 标题
.content("please wait")// 内容
// 第一个参数表示是否是不确定的,该值为 true 表示是不确定进度条,反之为确定进度条
// 第二个参数表示进度条的最大值
// 第三个参数表示是否显示百分比,如果该值为 true 表示显示百分比,反之不显示百分比
.progress(false, 150, true)// 确定进度条
.show();// 显示对话框
while (dialog.getCurrentProgress() != dialog.getMaxProgress())
if (dialog.isCancelled())
break;

try
Thread.sleep(50);
catch (InterruptedException e)
e.printStackTrace();

dialog.incrementProgress(1);

dialog.setContent("Done");

  1. 水平进度指示器的不确定进度条:Make an Indeterminate Dialog Horizontal
    默认情况下,不确定进度条对话框将使用循环指示器,也可以用下面方法改为使用水平进度指示器。

new MaterialDialog.Builder(this)
.title("progress dialog")// 标题
.content("please wait")// 内容
.progress(true, 0)// 不确定进度条
.progressIndeterminateStyle(true)
.show();// 显示进度条

  1. 为进度条着色:Coloring the Progress Bar

可自定义输入对话框中进度条的颜色,使用方法:widgetColor()、widgetColorRes()、widgetColorAttr()
注意:默认情况下,进度条将使用 AppCompat 中的 colorAccent 属性或者 Material 主题中的 android:colorAccent 属性。
全局属性:md_widget_color。


  1. 自定义编号和进度格式:Custom Number and Progress Formats

new MaterialDialog.Builder(this)
.title("title")// 标题
.content("content")// 内容
.progress(false, 150, true)
// 自定义编号
.progressNumberFormat("01/50")
// 自定义进度格式
.progressPercentFormat(NumberFormat.getPercentInstance())
.show();// 显示进度条

  1. 着色助手:Tint Helper

MDTintHelp:动态地为复选框、单选项、编辑框、进度条着色,


  1. 颜色选择器对话框:Color Choose Dialogs

~该部分是扩展功能,暂时未记录~


推荐阅读
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • 深入解析 Android 中 EditText 的 getLayoutParams 方法及其代码应用实例 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 尽管我们尽最大努力,任何软件开发过程中都难免会出现缺陷。为了更有效地提升对支持部门的协助与支撑,本文探讨了多种策略和最佳实践,旨在通过改进沟通、增强培训和支持流程来减少这些缺陷的影响,并提高整体服务质量和客户满意度。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • [转]doc,ppt,xls文件格式转PDF格式http:blog.csdn.netlee353086articledetails7920355确实好用。需要注意的是#import ... [详细]
  • 实验九:使用SharedPreferences存储简单数据
    本实验旨在帮助学生理解和掌握使用SharedPreferences存储和读取简单数据的方法,包括程序参数和用户选项。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 本文详细解析了使用C++实现的键盘输入记录程序的源代码,该程序在Windows应用程序开发中具有很高的实用价值。键盘记录功能不仅在远程控制软件中广泛应用,还为开发者提供了强大的调试和监控工具。通过具体实例,本文深入探讨了C++键盘记录程序的设计与实现,适合需要相关技术的开发者参考。 ... [详细]
  • Flutter 屏幕适配解决方案与最佳实践
    Flutter 屏幕适配解决方案与最佳实践 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 探索聚类分析中的K-Means与DBSCAN算法及其应用
    聚类分析是一种用于解决样本或特征分类问题的统计分析方法,也是数据挖掘领域的重要算法之一。本文主要探讨了K-Means和DBSCAN两种聚类算法的原理及其应用场景。K-Means算法通过迭代优化簇中心来实现数据点的划分,适用于球形分布的数据集;而DBSCAN算法则基于密度进行聚类,能够有效识别任意形状的簇,并且对噪声数据具有较好的鲁棒性。通过对这两种算法的对比分析,本文旨在为实际应用中选择合适的聚类方法提供参考。 ... [详细]
  • 在探讨C语言编程文本编辑器的最佳选择与专业推荐时,本文将引导读者构建一个基础的文本编辑器程序。该程序不仅能够打开并显示文本文件的内容及其路径,还集成了菜单和工具栏功能,为用户提供更加便捷的操作体验。通过本案例的学习,读者可以深入了解文本编辑器的核心实现机制。 ... [详细]
  • jQuery Flot 数据可视化插件:高效绘制图表的专业工具
    jQuery Flot 是一款高效的数据可视化插件,专为绘制各种图表而设计。该工具支持丰富的图表类型和自定义选项,适用于多种应用场景。用户可以通过其官方网站获取示例代码和下载资源,以便快速上手和使用。 ... [详细]
  • 深入解析经典卷积神经网络及其实现代码
    深入解析经典卷积神经网络及其实现代码 ... [详细]
author-avatar
据估计妇女嘎
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有